package eleme.openapi.sdk.config;

import eleme.openapi.sdk.utils.StringUtils;

/**
 * 调用 API 的配置信息
 *
 * @author me
 */
public class Config {

    private String appKey;
    private String appSecret;
    private String oauthCodeUrl;
    private String serverUrl;
    private String apiUrl;

    private SdkLogger sdkLogger;

    /**
     * 初始化配置信息
     *
     * @param sandboxEnv 是否沙箱环境：true-沙箱环境，false-生产正式环境；沙箱环境是提供给开发者的稳定的测试环境。
     * @param appKey 应用的身份标识，全局唯一的一个字符串。
     * @param appSecret 应用的私钥，一般配合应用的Key一起成对使用，用来验证应用的合法性。
     */
    public Config(boolean sandboxEnv, String appKey, String appSecret) {
        if (StringUtils.areNotEmpty(appKey, appSecret)) {
            System.out.println("init Config ...");
        } else {
            System.err.println("appKey and appSecret is required.");
        }
        this.appKey = appKey;
        this.appSecret = appSecret;
        if (sandboxEnv) {
            oauthCodeUrl = BasicURL.OAuth.SANDBOX_AUTHORIZE;
            serverUrl = BasicURL.SANDBOX_SERVER;
            apiUrl = BasicURL.OpenApi.SANDBOX_API;
        } else {
            oauthCodeUrl = BasicURL.OAuth.PRODUCTION_AUTHORIZE;
            serverUrl = BasicURL.PRODUCTION_SERVER;
            apiUrl = BasicURL.OpenApi.PRODUCTION_API;
        }
    }

    public String getOauthCodeUrl() {
        return oauthCodeUrl;
    }

    public String getServerUrl() {
        return serverUrl;
    }

    public String getApiUrl() {
        return apiUrl;
    }

    public String getAppKey() {
        return appKey;
    }

    public String getAppSecret() {
        return appSecret;
    }

    public void setSdkLogger(SdkLogger sdkLogger) {
        this.sdkLogger = sdkLogger;
    }

    public SdkLogger getSdkLogger() {
        return sdkLogger;
    }

}
